﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Thor.Common;
using Thor.Domain;

namespace Thor.Domain.Configuration
{
    /// <summary>
    /// A repository that stores administrator account entities.
    /// </summary>
    public interface IAdministratorAccountRepository : IRepository
    {
        /// <summary>
        /// Inserts an administrator account entity into the repository.
        /// </summary>
        /// <param name="administratorAccount"></param>
        void Insert(AdministratorAccount administratorAccount);

        /// <summary>
        /// Updtes an administrator account entity in the repository.
        /// </summary>
        /// <param name="administratorAccount"></param>
        void Update(AdministratorAccount administratorAccount);

        /// <summary>
        /// Deletes an administrator account entity from the repository.
        /// </summary>
        /// <param name="administratorAccount"></param>
        void Delete(AdministratorAccount administratorAccount);

        /// <summary>
        /// Fetches all administrator account entities from the repository.
        /// </summary>
        /// <returns></returns>
        List<AdministratorAccount> Fetch();

        /// <summary>
        /// Fetches a single administrator account entity from the repository.
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        AdministratorAccount Fetch(Guid id);
    }
}
